home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicScrollPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.5 KB  |  252 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.beans.PropertyChangeEvent;
  8. import java.beans.PropertyChangeListener;
  9. import javax.swing.JComponent;
  10. import javax.swing.JScrollBar;
  11. import javax.swing.JScrollPane;
  12. import javax.swing.JViewport;
  13. import javax.swing.KeyStroke;
  14. import javax.swing.LookAndFeel;
  15. import javax.swing.ScrollPaneConstants;
  16. import javax.swing.UIManager;
  17. import javax.swing.border.Border;
  18. import javax.swing.event.ChangeListener;
  19. import javax.swing.plaf.ComponentUI;
  20. import javax.swing.plaf.ScrollPaneUI;
  21. import javax.swing.plaf.UIResource;
  22.  
  23. public class BasicScrollPaneUI extends ScrollPaneUI implements ScrollPaneConstants {
  24.    protected JScrollPane scrollpane;
  25.    protected ChangeListener vsbChangeListener;
  26.    protected ChangeListener hsbChangeListener;
  27.    protected ChangeListener viewportChangeListener;
  28.    protected PropertyChangeListener spPropertyChangeListener;
  29.  
  30.    protected ChangeListener createHSBChangeListener() {
  31.       return new HSBChangeListener(this);
  32.    }
  33.  
  34.    protected PropertyChangeListener createPropertyChangeListener() {
  35.       return new PropertyChangeHandler(this);
  36.    }
  37.  
  38.    public static ComponentUI createUI(JComponent var0) {
  39.       return new BasicScrollPaneUI();
  40.    }
  41.  
  42.    protected ChangeListener createVSBChangeListener() {
  43.       return new VSBChangeListener(this);
  44.    }
  45.  
  46.    protected ChangeListener createViewportChangeListener() {
  47.       return new ViewportChangeHandler(this);
  48.    }
  49.  
  50.    public Dimension getMaximumSize(JComponent var1) {
  51.       return new Dimension(32767, 32767);
  52.    }
  53.  
  54.    public Dimension getMinimumSize(JComponent var1) {
  55.       return this.getPreferredSize(var1);
  56.    }
  57.  
  58.    public Dimension getPreferredSize(JComponent var1) {
  59.       return null;
  60.    }
  61.  
  62.    protected void installDefaults(JScrollPane var1) {
  63.       LookAndFeel.installBorder(var1, "ScrollPane.border");
  64.       LookAndFeel.installColorsAndFont(var1, "ScrollPane.background", "ScrollPane.foreground", "ScrollPane.font");
  65.       Border var2 = var1.getViewportBorder();
  66.       if (var2 == null || var2 instanceof UIResource) {
  67.          var2 = UIManager.getBorder("ScrollPane.viewportBorder");
  68.          var1.setViewportBorder(var2);
  69.       }
  70.  
  71.    }
  72.  
  73.    protected void installKeyboardActions(JScrollPane var1) {
  74.       ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollUp", 1, -1), KeyStroke.getKeyStroke(33, 0), 1);
  75.       ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollDown", 1, 1), KeyStroke.getKeyStroke(34, 0), 1);
  76.       ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollLeft", 0, -1), KeyStroke.getKeyStroke(33, 2), 1);
  77.       ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollDown", 0, 1), KeyStroke.getKeyStroke(34, 2), 1);
  78.       ((JComponent)var1).registerKeyboardAction(new ScrollHomeAction(this, "ScrollHome"), KeyStroke.getKeyStroke(36, 2), 1);
  79.       ((JComponent)var1).registerKeyboardAction(new ScrollEndAction(this, "ScrollEnd"), KeyStroke.getKeyStroke(35, 2), 1);
  80.    }
  81.  
  82.    protected void installListeners(JScrollPane var1) {
  83.       this.vsbChangeListener = this.createVSBChangeListener();
  84.       this.hsbChangeListener = this.createHSBChangeListener();
  85.       this.viewportChangeListener = this.createViewportChangeListener();
  86.       this.spPropertyChangeListener = this.createPropertyChangeListener();
  87.       JViewport var2 = this.scrollpane.getViewport();
  88.       JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
  89.       JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
  90.       if (var2 != null) {
  91.          var2.addChangeListener(this.viewportChangeListener);
  92.       }
  93.  
  94.       if (var3 != null) {
  95.          var3.getModel().addChangeListener(this.vsbChangeListener);
  96.       }
  97.  
  98.       if (var4 != null) {
  99.          var4.getModel().addChangeListener(this.hsbChangeListener);
  100.       }
  101.  
  102.       this.scrollpane.addPropertyChangeListener(this.spPropertyChangeListener);
  103.    }
  104.  
  105.    public void installUI(JComponent var1) {
  106.       this.scrollpane = (JScrollPane)var1;
  107.       this.installDefaults(this.scrollpane);
  108.       this.installListeners(this.scrollpane);
  109.       this.installKeyboardActions(this.scrollpane);
  110.    }
  111.  
  112.    public void paint(Graphics var1, JComponent var2) {
  113.       Border var3 = this.scrollpane.getViewportBorder();
  114.       if (var3 != null) {
  115.          Rectangle var4 = this.scrollpane.getViewportBorderBounds();
  116.          var3.paintBorder(this.scrollpane, var1, var4.x, var4.y, var4.width, var4.height);
  117.       }
  118.  
  119.    }
  120.  
  121.    protected void syncScrollPaneWithViewport() {
  122.       JViewport var1 = this.scrollpane.getViewport();
  123.       JScrollBar var2 = this.scrollpane.getVerticalScrollBar();
  124.       JScrollBar var3 = this.scrollpane.getHorizontalScrollBar();
  125.       JViewport var4 = this.scrollpane.getRowHeader();
  126.       JViewport var5 = this.scrollpane.getColumnHeader();
  127.       if (var1 != null) {
  128.          Dimension var6 = var1.getExtentSize();
  129.          Dimension var7 = var1.getViewSize();
  130.          Point var8 = var1.getViewPosition();
  131.          if (var2 != null) {
  132.             int var9 = var6.height;
  133.             int var10 = var7.height;
  134.             int var11 = Math.max(0, Math.min(var8.y, var10 - var9));
  135.             var2.setValues(var11, var9, 0, var10);
  136.          }
  137.  
  138.          if (var3 != null) {
  139.             int var12 = var6.width;
  140.             int var15 = var7.width;
  141.             int var16 = Math.max(0, Math.min(var8.x, var15 - var12));
  142.             var3.setValues(var16, var12, 0, var15);
  143.          }
  144.  
  145.          if (var4 != null) {
  146.             Point var13 = var4.getViewPosition();
  147.             var13.y = var1.getViewPosition().y;
  148.             var4.setViewPosition(var13);
  149.          }
  150.  
  151.          if (var5 != null) {
  152.             Point var14 = var5.getViewPosition();
  153.             var14.x = var1.getViewPosition().x;
  154.             var5.setViewPosition(var14);
  155.          }
  156.       }
  157.  
  158.    }
  159.  
  160.    protected void uninstallDefaults(JScrollPane var1) {
  161.       LookAndFeel.uninstallBorder(this.scrollpane);
  162.       if (this.scrollpane.getViewportBorder() instanceof UIResource) {
  163.          this.scrollpane.setViewportBorder((Border)null);
  164.       }
  165.  
  166.    }
  167.  
  168.    protected void uninstallKeyboardActions(JScrollPane var1) {
  169.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(33, 0));
  170.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(34, 0));
  171.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(33, 2));
  172.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(34, 2));
  173.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(36, 2));
  174.       ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(35, 2));
  175.    }
  176.  
  177.    protected void uninstallListeners(JComponent var1) {
  178.       JViewport var2 = this.scrollpane.getViewport();
  179.       JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
  180.       JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
  181.       if (var2 != null) {
  182.          var2.removeChangeListener(this.viewportChangeListener);
  183.       }
  184.  
  185.       if (var3 != null) {
  186.          var3.getModel().removeChangeListener(this.vsbChangeListener);
  187.       }
  188.  
  189.       if (var4 != null) {
  190.          var4.getModel().removeChangeListener(this.hsbChangeListener);
  191.       }
  192.  
  193.       this.scrollpane.removePropertyChangeListener(this.spPropertyChangeListener);
  194.       this.vsbChangeListener = null;
  195.       this.hsbChangeListener = null;
  196.       this.viewportChangeListener = null;
  197.       this.spPropertyChangeListener = null;
  198.    }
  199.  
  200.    public void uninstallUI(JComponent var1) {
  201.       this.uninstallDefaults(this.scrollpane);
  202.       this.uninstallListeners(this.scrollpane);
  203.       this.uninstallKeyboardActions(this.scrollpane);
  204.       this.scrollpane = null;
  205.    }
  206.  
  207.    protected void updateColumnHeader(PropertyChangeEvent var1) {
  208.       JViewport var2 = (JViewport)var1.getNewValue();
  209.       if (var2 != null) {
  210.          JViewport var3 = this.scrollpane.getViewport();
  211.          Point var4 = var2.getViewPosition();
  212.          var4.x = var3 != null ? var3.getViewPosition().x : 0;
  213.          var2.setViewPosition(var4);
  214.          this.scrollpane.add(var2, "COLUMN_HEADER");
  215.       }
  216.  
  217.    }
  218.  
  219.    protected void updateRowHeader(PropertyChangeEvent var1) {
  220.       JViewport var2 = (JViewport)var1.getNewValue();
  221.       if (var2 != null) {
  222.          JViewport var3 = this.scrollpane.getViewport();
  223.          Point var4 = var2.getViewPosition();
  224.          var4.y = var3 != null ? var3.getViewPosition().y : 0;
  225.          var2.setViewPosition(var4);
  226.       }
  227.  
  228.    }
  229.  
  230.    protected void updateScrollBarDisplayPolicy(PropertyChangeEvent var1) {
  231.       this.scrollpane.revalidate();
  232.       this.scrollpane.repaint();
  233.    }
  234.  
  235.    protected void updateViewport(PropertyChangeEvent var1) {
  236.       JViewport var2 = (JViewport)var1.getOldValue();
  237.       JViewport var3 = (JViewport)var1.getNewValue();
  238.       if (var2 != null) {
  239.          var2.removeChangeListener(this.viewportChangeListener);
  240.       }
  241.  
  242.       if (var3 != null) {
  243.          Point var4 = var3.getViewPosition();
  244.          var4.x = Math.max(var4.x, 0);
  245.          var4.y = Math.max(var4.y, 0);
  246.          var3.setViewPosition(var4);
  247.          var3.addChangeListener(this.viewportChangeListener);
  248.       }
  249.  
  250.    }
  251. }
  252.